#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>







//int main()
//{
//    pid_t id = fork();
//    if(id == 0)
//    {
//        //child
//        execlp("ls", "ls", "-l", "-a", NULL);
//        exit(1);
//    }
//
//    int status;
//    while(1)
//    {
//         pid_t rid = waitpid(id, &status, WNOHANG);
//         if(rid > 0)
//         {
//             printf("wait success, rid: %d, exit code: %d\n", rid, WEXITSTATUS(status));
//             break;
//         }
//         else if(rid == 0)
//         {
//            printf("child is runing, do other things\n");
//            sleep(1);
//         }
//         else 
//         {
//             perror("waitpid");
//         }
//    }
//
//
//    return 0;
//}



//int main()
//{
//    pid_t id = fork();
//    if(id == 0)
//    {
//        //child
//        int cnt = 5;
//        while(cnt)
//        {
//             printf("I am child, pid: %d, ppid: %d\n", getpid(), getppid());
//             sleep(1);
//             cnt--;
//        }
//        exit(1);
//    }
//
//    int status = 0;
//    pid_t rid = waitpid(id, &status, 0);//阻塞等待i
//    if(WIFEXITED(status))
//    {
//        printf("wait success, pid: %d, rid: %d, exit code: %d\n", getpid(), rid, WEXITSTATUS(status));
//    }
//    else 
//    {
//        printf("程序异常退出\n");
//    }
//    
//    printf("exit code: %d, exit signo: %d\n", (status >> 8) & 0xff, status & 0x7f);
//    return 0;
//}
